//
//  LCSwipeTableViewCell.h
//  LCLibrary
//
//  Created by cc on 14-11-5.
//  Copyright (c) 2014年 cc. All rights reserved.
//

#import <UIKit/UIKit.h>
#import "NSMutableArray+LCTableViewCellUtilityButtons.h"

@class LCSwipeTableViewCell;

/**
 *  cell当前状态
 */
typedef NS_ENUM(NSInteger, LCSwipeTableViewCellState){
    kCellStateCenter,
    kCellStateLeft,
    kCellStateRight,
};

#pragma mark-
@protocol LCSwipeTableViewCellDelegate <NSObject>
@optional

/**
 *  cell长按
 *
 *  @param cell
 */
- (void)tableViewCellDidLongPressed:(LCSwipeTableViewCell *)cell;


/**
 *  左边按钮点击触发
 *
 *  @param cell
 *  @param index
 */
- (void)tableViewCell:(LCSwipeTableViewCell *)cell didTriggerLeftUtilityButtonWithIndex:(NSInteger)index;

/**
 *  右边按钮点击触发
 *
 *  @param cell
 *  @param index
 */
- (void)tableViewCell:(LCSwipeTableViewCell *)cell didTriggerRightUtilityButtonWithIndex:(NSInteger)index;

/**
 *  cell当前状态
 *
 *  @param cell
 *  @param state
 */
- (void)tableViewCell:(LCSwipeTableViewCell *)cell scrollingToState:(LCSwipeTableViewCellState)state;

/**
 *  是否阻止多个cell同时处于打开状态
 *
 *  @param cell
 *
 *  @return
 */
- (BOOL)tableViewCellShouldHideUtilityButtonsOnSwipe:(LCSwipeTableViewCell *)cell;

/**
 *  是否可以滑动到某个状态
 *
 *  @param cell
 *  @param state
 *
 *  @return
 */
- (BOOL)tableViewCell:(LCSwipeTableViewCell *)cell canSwipeToState:(LCSwipeTableViewCellState)state;

/**
 *  cell停止滑动
 *
 *  @param cell
 */
- (void)tableViewCellDidEndScrolling:(LCSwipeTableViewCell *)cell;

@end

#pragma mark-
@interface LCSwipeTableViewCell : UITableViewCell
/**
 *  左边按钮集合
 */
@property (nonatomic, copy) NSArray *leftUtilityButtons;
/**
 *  右边按钮集合
 */
@property (nonatomic, copy) NSArray *rightUtilityButtons;
/**
 *  delegate
 */
@property (nonatomic, weak) id <LCSwipeTableViewCellDelegate> delegate;

/**
 *  设置左边按钮集合，按钮宽度
 *
 *  @param leftUtilityButtons
 *  @param width
 */
- (void)setLeftUtilityButtons:(NSArray *)leftUtilityButtons buttonWidth:(CGFloat)width;
/**
 *  设置右边按钮集合，按钮宽度
 *
 *  @param rightUtilityButtons
 *  @param width
 */
- (void)setRightUtilityButtons:(NSArray *)rightUtilityButtons buttonWidth:(CGFloat)width;
/**
 *  隐藏按钮
 *
 *  @param animated 是否显示动画
 */
- (void)hideUtilityButtonsAnimated:(BOOL)animated;
/**
 *  显示左边按钮
 *
 *  @param animated 是否显示动画
 */
- (void)showLeftUtilityButtonsAnimated:(BOOL)animated;
/**
 *  显示右边按钮
 *
 *  @param animated 是否显示动画
 */
- (void)showRightUtilityButtonsAnimated:(BOOL)animated;
/**
 *  按钮是否隐藏
 *
 *  @return
 */
- (BOOL)isUtilityButtonsHidden;
@end
